package com.ohs.ohsoa.system.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ohs.ohsoa.system.dto.OvertimeLeaveInfoParamDto;
import com.ohs.ohsoa.system.dto.OvertimeLeaveStatisticsDto;
import com.ohs.ohsoa.system.entity.OvertimeLeaveInfo;
import com.ohs.ohsoa.system.vo.OvertimeLeaveInfoCountParamVo;
import com.ohs.ohsoa.system.vo.OvertimeLeaveInfoParamVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


@Mapper
public interface OvertimeLeaveInfoMapper extends BaseMapper<OvertimeLeaveInfo> {


    /**获取列表信息
     * 自己申请页面
     *
     * @param overtimeLeaveInfoParamDto 检索用参数
     * @return 列表信息
     */
    List<OvertimeLeaveInfoParamVo> overtimeleaveinfoSelectListByOneself(@Param("overtimeLeaveInfoParamDto") OvertimeLeaveInfoParamDto overtimeLeaveInfoParamDto);

    /**超级管理员页面
     *
     * @param overtimeLeaveInfoParamDto  超级管理员页面
     * @return 超级管理员页面
     */
    List<OvertimeLeaveInfoParamVo> overtimeleaveinfoSelectListBySuperFlg(@Param("overtimeLeaveInfoParamDto") OvertimeLeaveInfoParamDto overtimeLeaveInfoParamDto);

    /** 判断是否是组长
     *
     *@return 是否是组长数据
     */
    List<String> selectcountsubgroupmanage(@Param("userGuid") String userGuid);

    /**又是部长又是组长
     *
     * @param overtimeLeaveInfoParamDto 又是部长又是组长
     * @return 又是部长又是组长数据
     */
    List<OvertimeLeaveInfoParamVo> overtimeleaveinfoSelectListByLeaderFlgAndSelectFlag(@Param("overtimeLeaveInfoParamDto") OvertimeLeaveInfoParamDto overtimeLeaveInfoParamDto);

    /**只是部长
     *
     * @param overtimeLeaveInfoParamDto 只是部长
     * @return 只是部长数据
     */
    List<OvertimeLeaveInfoParamVo> overtimeleaveinfoSelectListBySelectFlag(@Param("overtimeLeaveInfoParamDto") OvertimeLeaveInfoParamDto overtimeLeaveInfoParamDto);

    /**检索条件管理者
     *
     * @param overtimeLeaveInfoParamDto 检索条件管理者
     * @return 条件管理者
     */
    List<OvertimeLeaveInfoParamVo> overtimeleaveinfoSelectListBySelectFlagAndManagerFlg(@Param("overtimeLeaveInfoParamDto") OvertimeLeaveInfoParamDto overtimeLeaveInfoParamDto);

    /**组长可以看到的人
     *
     * @param overtimeLeaveInfoParamDto 组长可以看到的人
     * @return 组长可以看到的人
     */
    List<OvertimeLeaveInfoParamVo> overtimeleaveinfoSelectListCanSeeBySelectFlag(@Param("overtimeLeaveInfoParamDto") OvertimeLeaveInfoParamDto overtimeLeaveInfoParamDto);

    /**获取详细信息
     *
     * @param overtimeLeaveInfoParamDto 详细信息
     * @return 详细信息
     */
    List<OvertimeLeaveInfoParamVo> overtimeleaveinfoSelect(@Param("overtimeLeaveInfoParamDto") OvertimeLeaveInfoParamDto overtimeLeaveInfoParamDto);

    /**判断时间是否重复
     *
     * @param begintime 开始时间
     * @param endtime 结束时间
     * @param userid 用户id
     * @param oliGuid guid
     * @return  判断时间是否重复
     */
    List<OvertimeLeaveInfoParamVo> selectcounttime(@Param("begintime") String begintime,@Param("endtime") String endtime,@Param("userid") String userid,@Param("oliGuid") String oliGuid);

    /**
     *
     * @param oliGuid guid
     * @return guid
     */
    String selectverifiedstatebymore(@Param("oliGuid") String oliGuid);

    /** 删除  逻辑删除
     *
     * @param oliGuid 用户guid
     * @return 删除结果
     */
    Boolean overtimeleaveinfoDelete(@Param("oliGuid") String oliGuid);

    /**
     *
     * @param oliGuid  用户guid
     * @return 用户guid
     */
    String selectverifiedstate(@Param("oliGuid") String oliGuid);

    /**获取个人加班请假时长
     *
     * @param overtimeLeaveStatisticsDto 个人加班请假时长
     * @return 个人加班请假时长
     */
    OvertimeLeaveInfoCountParamVo overtimeleaveinfocount(@Param("overtimeLeaveStatisticsDto") OvertimeLeaveStatisticsDto overtimeLeaveStatisticsDto);
}
